Persistent storage overlay

ABSTRACT

The disclosed computer-implemented methods may implement a persistent storage overlay for a cloud gaming application platform. For example, a host of a cloud gaming server, may provide a persistent storage overlay service, receive, from a mobile device, requests for access to one or more files of a cloud gaming application stored on the host, and respond by making data of the cloud gaming application available to the host and to the mobile device, without copying the data, in a manner that obviates installation of the cloud gaming application on the mobile device. The mobile device may also write changes directly to a folder of the host in a manner that obviates creating a copy of game save data on the mobile device.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application No. 63/105,320, filed 25 Oct. 2020, and U.S. Provisional Application No. 63/194,821, filed 28 May 2021, the disclosures of each of which are incorporated, in their entirety, by this reference. Co-pending U.S. application Ser. No. 17/506,640, filed 20 Oct. 2021, is incorporated, in its entirety, by this reference.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings illustrate a number of exemplary embodiments and are a part of the specification. Together with the following description, these drawings demonstrate and explain various principles of the present disclosure.

FIG. 1 is a flow diagram of an exemplary method for implementing a persistent storage overlay for a cloud hosting platform.

FIG. 2 is a block diagram of an exemplary system for implementing a persistent storage overlay for a cloud hosting platform.

FIG. 3 is a flow diagram of an exemplary method for utilizing a persistent storage overlay by a mobile device.

FIG. 4 is a block diagram of an exemplary system for utilizing a persistent storage overlay by a mobile device.

FIG. 5 is a block diagram of an exemplary network implementing persistent storage overlay for a cloud hosting platform.

FIG. 6 is a block diagram of an exemplary architecture for a cloud hosting platform.

Throughout the drawings, identical reference characters and descriptions indicate similar, but not necessarily identical, elements. While the exemplary embodiments described herein are susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and will be described in detail herein. However, the exemplary embodiments described herein are not intended to be limited to the particular forms disclosed. Rather, the present disclosure covers all modifications, equivalents, and alternatives falling within the scope of the appended claims.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

For security reasons as well as managing session at scale, every time a user connects to a cloud application platform, a new session may be created that may normally not preserve files from the user's last session. As a result, user devices may need to download a cloud gaming application and all of its updates and install and update the cloud gaming application locally before the application may launch. Additionally, user devices may create a local copy of game save data.

The present disclosure is generally directed to a cloud application platform that may incorporate a persistent storage overlay to reduce file distribution time and drastically improve flexibility for game installation, game updates, and game data. A persistent storage overlay service may be provided on a host (e.g., different location or different machine) by using a file system and emulator that allows a mobile device operating system (OS) to directly access a cloud application stored and run on the host. For example, on an Android platform, the persistent storage overlay may be implemented by utilizing file system in user mode (FUSE) (e.g., the Linux file system in user mode) to directly map games' files on the host to Android. Requests for file access may be re-directed by a background service on Android to a service running on the host. Subsequently, the game itself or the game's data may be made available immediately on both sides without copying the data. Thus, the host's folders are mapped into the Android OS in such a way that the Android OS recognizes the folders as a cloud application that is already installed. This procedure eliminates the need to install cloud applications on a user's mobile device (e.g., Android or Mac) when the user connects. Additionally, users write changes to the host directly and the host preserves a mapped folder that includes the changes, thus avoiding the need to maintain a local copy of game save data on the mobile device. As a result, delay in application launch may be greatly reduced and the need to create a copy of game data at the mobile device can be avoided.

Features from any of the embodiments described herein may be used in combination with one another in accordance with the general principles described herein. These and other embodiments, features, and advantages will be more fully understood upon reading the following detailed description in conjunction with the accompanying drawings and claims.

The following will provide, with reference to FIGS. 1-6 , detailed descriptions of systems and methods for persistent storage overlay. Detailed descriptions of an exemplary method and system for implementing a persistent storage overlay for a cloud hosting platform are provided with reference to FIGS. 1 and 2 . Detailed descriptions of an exemplary method and system for utilizing a persistent storage overlay by a mobile device are provided with reference to FIGS. 3 and 4 . Detailed descriptions of an exemplary network implementing persistent storage overlay for a cloud hosting platform are provided with reference to FIG. 5 . Detailed descriptions of an exemplary architecture for a cloud hosting platform are provided with reference to FIG. 6 .

FIG. 1 is a flow diagram of an exemplary computer-implemented method 100 for implementing persistent storage overlay for a cloud hosting platform. The steps shown in FIG. 1 may be performed by any suitable computer-executable code and/or computing system, including the system(s) illustrated in FIGS. 2 and/or 5 . In one example, each of the steps shown in FIG. 1 may represent an algorithm whose structure includes and/or is represented by multiple sub-steps, examples of which will be provided in greater detail below.

As illustrated in FIG. 1 , a method 100 of implementing a persistent storage overlay for a cloud gaming application platform begins at step 110. The systems described herein may perform step 110 in a variety of ways. In one example, step 110 may include providing, by a computer processor of a host of a cloud gaming server, a persistent storage overlay service. In some implementations, the computer processor provides the persistent storage overlay service at least in part by using a file system and an emulator that allows an operating system of a mobile device to directly access the cloud gaming application stored on the host. In additional or alternative implementations, providing the persistent storage overlay service is accomplished at least in part by using a file system in user mode (FUSE) (e.g., Linux file system in user mode) to directly map the one or more files of the cloud gaming application stored on the host to an operating system (e.g., Android OS) of the mobile device.

As used herein, the term “cloud gaming” may generally refer, without limitation, to a type of online gaming that runs video games on remote servers and streams them directly to a user's device, or more colloquially, playing a game remotely from a cloud. Cloud gaming may contrast with traditional means of gaming, wherein a game runs locally on a user's video game console, personal computer, or mobile device. Cloud gaming may also be referred to as gaming on demand or gaming-as-a-service. Thus, the term “cloud gaming application” may generally refer, without limitation, to a gaming application that may be stored and executed on a remote server as just described. Likewise, the term “cloud gaming server” may generally refer, without limitation, to a remote server as just described, and more particularly to a host machine as described in greater detail below with reference to FIG. 6 .

As used herein, the term “persistent” may generally refer to the characteristic or state of a system that outlives (persists more than) the process that created it. Persistence may be achieved, for example, by storing the state as data in computer data storage. Programs may, thus, transfer data to and from storage devices and provide mappings from native programming-language data structures to storage device data structures.

As used herein, the term “storage” may generally refer to one of two types of two major data holding areas in a computer, tablet, or smartphone. Storage often comprises hard drives and solid-state drives (SSDs), which hold programs and data. A primary attribute of storage may be that it is non-volatile, so it retains its content when the power is turned off. In contrast, random access memory (RAM), which is the other one of the two major holding areas, is typically volatile, meaning that it loses all of its content when the power is turned off. In the past, storage and memory clearly referred to two separate objects, but today they do not because “memory” may refer to either one. RAM chips exist that are non-volatile and they serve as both storage and RAM in remote sensors and similar devices but not as the memory in computers, phones, and tablets.

As used herein, the term “overlay” may generally refer to a process of transferring a block of program code or other data into main memory, replacing what is already stored. Overlaying is a programming method that allows programs to be larger than a computer's main memory. For example, overlay virtualization is a method for creating traffic isolation within a multitenancy infrastructure. Using a form of tunneling between isolated network segments, it allows for scalability and ease of use while providing for separation between the virtual network and the underlying physical environment.

As used herein, the term “service” may generally refer to software that performs automated tasks, responds to hardware events, or listens for data requests from other software. In a user's operating system, these services are often loaded automatically at startup, and run in the background, without user interaction.

As used herein, the term “host” may generally refer to a network host corresponding to a computer or other device connected to a computer network. A host may operate as a server offering information resources, services, and applications to users or other hosts on the network. Hosts may be assigned at least one network address. One type of host may be a host virtual machine (host HVM), which is a virtual machine operated and hosted from a remote cloud server. Host virtual machines may be created and hosted entirely on a cloud service provider infrastructure and may be available to remote users over the Internet under systematic access control, defined compute, and I/O resources.

As used herein, the term “file system” may generally refer to a rules mechanism that controls how data is stored and retrieved. Without a file system, data placed in a storage medium would be one large body of data with no way to tell where one piece of data stops and the next begins. By separating the data into pieces and giving each piece a name, the data is easily isolated and identified. Taking its name from the way paper-based data management system is named, each group of data is called a “file.” The structure and logic rules used to manage the groups of data and their names is called a “file system.”

As used herein, the term “user mode” may generally refer to one of two modes of operation available in many operating systems (e.g., Linux, Windows, etc.). A processor may switch between kernel mode and user mode depending on what type of code is running on the processor. For example, applications may run in user mode and core operating system components may run in kernel mode. While many drivers run in kernel mode, some drivers may run in user mode. User mode may be employed to build efficient virtual machines. Applications run in user mode may be assigned virtual addresses different from one another and different from operating system addresses. When operating in user mode, the processor may be prevented from accessing the operating system files, so these files cannot be altered. Also, applications run in user mode that have different virtual addresses can be prevented from accessing and altering one another.

As used herein, the term “file system operating in user mode” may generally refer to a software interface such as Filesystem in USErspace (FUSE). FUSE is a software interface for Unix and Unix-like computer operating systems that lets non-privileged users create their own file systems without editing kernel code. This is achieved by running file system code in user space while the FUSE module provides only a “bridge” to the actual kernel interfaces. FUSE is available for Linux, FreeBSD, OpenBSD, NetBSD (as puffs), OpenSolaris, Minix 3, macOS, and Windows. FUSE is free software originally released under the terms of the GNU General Public License and the GNU Lesser General Public License.

As used herein, the term “emulator” may generally refer to hardware or software that enables one computer system (called the host) to behave like another computer system (called the guest). An emulator typically enables the host system to run software or use peripheral devices designed for the guest system. Emulation may, thus, refer to the ability of a computer program in an electronic device to emulate (or imitate) another program or device. In server virtualization, emulation may be a synonym for virtual environment, where a virtual environment can also be referred to as a partition, guest, instance, or container.

Processing may proceed from step 110 to step 120. The systems described herein may perform step 120 in any suitable manner. In one example, step 120 may include receiving, by the computer processor from a mobile device, one or more requests for access to one or more files of a cloud gaming application stored on the host. Such requests may take any suitable form, such as a request to download and install the cloud gaming application, a request to receive game save data, a request to initiate a user session to play the cloud gaming application, a request to write game progress data to a user session stored on the server, etc. In some implementations, the requests are redirected by a background service running on the mobile device to the persistent storage overlay service provided by the host.

As used herein, the term “mobile device” may generally refer to a computer small enough to hold and operate in the hand. Typically, any handheld computer device will have an LCD or OLED flatscreen interface, providing a touchscreen interface with digital buttons and keyboard or physical buttons along with a physical keyboard. Many such devices can connect to the Internet and interconnect with other devices such as car entertainment systems or headsets via Wi-Fi, Bluetooth, cellular networks, or near field communication (NFC). Integrated cameras, the ability to place and receive voice and video telephone calls, video games, and Global Positioning System (GPS) capabilities are common. Power is typically provided by a lithium-ion battery. Mobile devices may run mobile operating systems that allow third-party apps specialized for said capabilities to be installed and run.

As used herein, the term “file” may generally refer to a collection of data stored in one unit, identified by a filename, and typically stored in a folder along with one or more other files. A file can be a document, picture, audio or video stream, data library, application, or other collection of data. Files can be opened, saved, deleted, and moved to different folders. They can also be transferred across network connections or downloaded from the Internet.

As used herein, the term “background service” may generally refer to a service, as already described herein, that runs in a background of a computer, such as a mobile device. A background service may perform an operation that is not directly noticed by the user. A background service may continue to run when the user is not interacting with an application for which the service is configured to perform operations.

Processing may proceed from step 120 to step 130. The systems described herein may perform step 130 in any suitable manner. For example, step 130 may include making, by the computer processor in response to the one or more requests, data of the cloud gaming application available to the host and to the mobile device, without copying the data, in a manner that obviates installation of the cloud gaming application on the mobile device. The systems described herein may make the data of the cloud gaming application available in a variety of ways. For example, in some implementations, making data of the cloud gaming application available to the host and to the mobile device without copying the data may include mapping one or more folders of the host into an operating system of the mobile device in a manner that causes the operating system of the mobile device to recognize the one or more folders of the host as a cloud gaming application that is already installed on the mobile device. In additional or alternative implementations, making data of the cloud gaming application available may include receiving, by the computer processor, changes written directly from the mobile device. Such changes may take any suitable form, such as user preferences, game progress data, etc. In some of these implementations, making data of the cloud gaming application available may further include preserving, by the computer processor, a mapped folder that includes the changes, thus avoiding any need to copy game save data.

As used herein, the term “installation” may generally refer to the act of making a computer program ready for execution. Installation may refer to the particular configuration of a software or hardware with a view to making it usable with the computer. A soft or digital copy of the piece of software (program) is needed to install it. Installation typically involves code (program) being copied/generated from the installation files to new files on the local computer for easier access by the operating system, creating necessary directories, registering environment variables, providing a separate program for un-installation, etc. Because code is generally copied/generated in multiple locations, uninstallation usually involves more than just erasing the program folder. For example, registry files and other system code may need to be modified or deleted for a complete uninstallation.

As used herein, the term “mapping” may generally refer to linking to another computer, share, or device. For example, mapping a folder may involve linking to a shared drive on a network. Mapping a shared drive may, thus, add a folder that has already been shared on a network to a list of drives accessible on a computer or mobile device.

As used herein, the term “folder” generally refers to a virtual location for applications, documents, data, or other sub-folders. Folders help in storing and organizing files and data in the computer. Due to the way folders organize and store data within the file system of the storage media, folders may also be known as file directories or simply directories. Folders may be implemented as pointers to file locations within the file system of the computer.

As used herein, the term “operating system” may generally refer to software that supports a computer's basic functions, such as scheduling tasks, executing applications, and controlling peripherals. For hardware functions such as input and output and memory allocation, the operating system may act as an intermediary between programs and the computer hardware. Example types of operating systems include Unix and Unix-like operating systems, BSD and its descendants, macOS, and Microsoft Windows.

A persistent storage overlay device may be implemented in any suitable manner. Turning to FIG. 2 , an exemplary system 200 includes at least one physical processor 230, physical memory 240 comprising computer-executable instructions such as modules 202, and additional elements 220, such as cloud gaming application files 222, persistent storage overlay service 224, and/or a user session 226 as described herein. In some implementations, persistent storage overlay service 224 may include file system 224A and emulator 224B as described herein. When executed by the physical processor 230, the modules 202 cause physical processor 230 to carry out various operations. For example, service provision module 204 may execute procedures described above with reference to step 110 of method 100 of FIG. 1 . Additionally, receiver module 206 may execute procedures described above with reference to step 120 of method 100 of FIG. 1 . Also, access module 208 may execute procedures described above with reference to step 130 of method 100 of FIG. 1 .

As used herein, the term “user session” or “session” may refer, without limitation, to a temporary and interactive information interchange between communicating devices, such as a session of activity and/or interactions of a client referencing a resource that may be tracked by the resource's host. For example, a website host may track a user's activity during a session with a website provided by the website host. A user session may be used by a host to maintain a user specific state, persistent objects, authenticated user identities, etc., and may further facilitate communication between the client and host by remembering previous interactions/communications. The state of the user session may be maintained in a memory during the session and as such, may be stored to a storage device and later retrieved. Thus, the user session may be paused, the session state stored, and the user session may be restored by retrieving the stored session state. A user session may be viewed in certain contexts as game progress data and/or game save data.

As illustrated in FIG. 3 , a method 300 of utilizing a persistent storage overlay service by a mobile device begins at step 310, which includes transmitting, by a computer processor of a mobile device to a persistent storage overlay service provided by a host of a cloud gaming server, one or more requests for access to one or more files of a cloud gaming application stored on the host. In some implementations, the requests are redirected by a background service running on the mobile device to the persistent overlay service provided by the host. In some implementations, the persistent storage overlay is provided by using a file system and an emulator that allows an operating system of the mobile device to directly access the cloud gaming application stored on the host. In additional or alternative implementations, the persistent storage overlay service is provided at least in part by using a file system in user mode (FUSE) to directly map the one or more files of the cloud gaming application stored on the host to an Android operating system of the mobile device.

Processing may proceed from step 310 to step 320, which may include receiving access, by the computer processor and from the host, to data of the cloud gaming application, without receiving a copy the data, in a manner that obviates installation of the cloud gaming application on the mobile device. In some implementations, folders of the host are mapped into an operating system of the mobile device. For example, the folders may be mapped in a manner that causes the operating system of the mobile device to recognize the folders of the host as a cloud gaming application that is already installed on the mobile device.

Processing may proceed from step 320 to step 330, which may include writing changes, by the computer processor of the mobile device, directly to a folder of the host in a manner that obviates creating a copy of game save data on the mobile device. In some implementations, the host may be configured to preserve a mapped folder that includes the changes, thus avoiding any need to copy game save data at the mobile device.

A mobile device that utilizes the persistent storage overlay service may be implemented in any suitable manner. Turning to FIG. 4 , an exemplary system 400 includes at least one physical processor 430, physical memory 440 comprising computer-executable instructions such as modules 402, and additional elements 420, such as background service 422. Unlike previous mobile devices, no user session is included in the additional elements 420 because the mobile device may write directly to user session 226 of FIG. 2 . When executed by the physical processor 430, the modules 402 cause physical processor 430 to carry out various operations. For example, transmitter module 404 may execute procedures described above with reference to step 310 of method 300 of FIG. 3 . Additionally, receiver module 406 may execute procedures described above with reference to step 320 of method 300 of FIG. 3 . Also, write module 408 may execute procedures described above with reference to step 330 of method 300 of FIG. 3 .

Example system 200 in FIG. 2 and example system 400 in FIG. 4 may be implemented in a variety of ways. For example, all or a portion of example systems 200 and 400 may represent portions of example system 500 in FIG. 5 . As shown in FIG. 5 , system 500 may include a computing device 502 in communication with a server 506 via a network 504. In one example, all or a portion of the functionality of modules 202 may be performed by server 506 and/or any other suitable computing system. In another example, all or a portion of the functionality of modules 402 may be performed by computing device 502 and/or any other suitable computing system. As will be described in greater detail below, one or more of modules 202 from FIGS. 2 and/or 402 from FIG. 4 may, when executed by at least one processor of computing device 502 and/or server 506, enable computing device 502 and/or server 506 to implement and/or utilize persistent storage overlay. For example, and as will be described in greater detail below, one or more of modules 202 and/or 402 may cause server 506 to provide computing device 502 direct read and/or write access to cloud gaming file data stored on server 506.

FIG. 6 illustrates an exemplary cloud-based software distribution platform 600. The platform 600 may include a host 606, a network 604 (which may correspond to network 504), and computing devices 602 and 603. Host 606, which may correspond to server 506, may include containers 640 and 642, which may respectively include a virtual machine 630 and a virtual machine 632.

In some embodiments, the term “virtualization environment” may refer to an isolated application environment that may virtualize at least some aspects of the application environment such that an application may interface with the virtualized aspects as if running on the application's native environment. Examples of virtualization environments include, without limitation, containers and virtual machines (“VM”). In some embodiments, the term “container” may refer to an isolated application environment that virtualizes at least an operating system (“OS”) of the base host machine by sharing a system or OS kernel with the host machine. For example, if the base host machine runs Windows (or other desktop OS), the container may also run Windows (or other desktop OS) by sharing the OS kernel such that the container may not require a complete set of OS binaries and libraries. In some embodiments, the term “virtual machine” may refer to an isolated application environment that virtualizes hardware as well as an OS. Because a VM may virtualize hardware, an OS for the VM may not be restricted by the base host machine OS. For example, even if the base host machine is running Windows (or another desktop OS), a VM on the base host machine may be configured to run Android (or other mobile OS) by emulating mobile device hardware. In other examples, other combinations of OSes may be used.

VM 630 may run an application 620 and VM 632 may run an application 622. Host 606 may utilize nested virtualization environments (e.g., VM 630 running in container 640 and VM 632 running in container 642) to more efficiently manage virtualization environments. For instance, as a number of VMs are initiated and/or closed the nested virtualization may facilitate management of virtualization environments for various types of VMs as well as more efficiently scale the number of VMs running concurrently. Certain aspects which may be global across certain VMs may be better managed via containers.

Computing device 602, which may correspond to an instance of computing device 502, may access data of application 620 via network 604 and background service 624. Computing device 603, which may correspond to another instance of computing device 302, may access data of application 622 via network 604 and background service 626. As shown in FIG. 6 , because application 620 and application 622 are actually running on host 606, host 606 may maintain individual sessions (e.g., user session 226) for each of application 620 with computing device 602 and application 622 with computing device 603. Computing devices 602 and 603 may write directly to user sessions maintained by their respective hosts, thus avoiding the need for the user devices 602 and 603 to create and maintain their own user sessions.

Although FIG. 6 illustrates a virtualization environment with one nested level (e.g., VM 630 running in container 640 or VM 632 running in container 642), in other embodiments, the virtualization environment may include additional levels of nesting. For example, application 620 may run in another VM or container running in VM 630. Moreover, although FIG. 6 illustrates a single VM per container, in other embodiments there may be more than one nested virtualization environment per base virtualization environment.

The foregoing has disclosed a cloud application platform that may incorporate a persistent storage overlay to reduce file distribution time and drastically improve flexibility for game installation, game updates, and games' data. A persistent storage overlay service may be provided on a host (e.g., different location or different machine) by using a file system and emulator that allows a mobile device operating system (OS) to directly access a cloud application stored and run on the host. For example, on an Android platform, the persistent storage overlay may be implemented by utilizing file system in user mode (FUSE) (e.g., the Linux file system in user mode) to directly map games' files on the host to Android. Requests for file access may be re-directed by a background service on Android to a service running on the host. Subsequently, the game itself or the game's data may be made available immediately on both sides without copying the data. Thus, the host's folders are mapped into the Android OS in such a way that the Android OS recognizes the folders as a cloud application that is already installed. This procedure eliminates the need to install cloud applications on a user's mobile device (e.g., Android or Mac) when the user connects. Additionally, users write changes to the host directly and the host preserves a mapped folder that includes the changes, thus avoiding the need to maintain a local copy of game save data on the mobile device. As a result, delay in application launch may be greatly reduced and the need to create a copy of game data at the mobile device can be avoided.

EXAMPLE EMBODIMENTS

Example 1: A computer-implemented method comprising: providing, by a computer processor of a host of a cloud gaming server, a persistent storage overlay service;

receiving, by the computer processor from a mobile device, one or more requests for access to one or more files of a cloud gaming application stored on the host; and making, by the computer processor in response to the one or more requests, data of the cloud gaming application available to the host and to the mobile device, without copying the data, in a manner that obviates installation of the cloud gaming application on the mobile device.

Example 2: the method of example 1, wherein the computer processor provides the persistent storage overlay service at least in part by using a file system and an emulator that allows an operating system of a mobile device to directly access the cloud gaming application stored on the host.

Example 3: The method of example 1 or 2, wherein providing the persistent storage overlay service is accomplished at least in part by using a file system in user mode (FUSE) to directly map the one or more files of the cloud gaming application stored on the host to an Android operating system of the mobile device.

Example 4: The method of any of examples 1-3, wherein the requests are redirected by a background service running on the mobile device to the persistent storage overlay service provided by the host.

Example 5: The method of any of examples 1-4, wherein making data of the cloud gaming application available to the host and to the mobile device without copying the data includes mapping one or more folders of the host into an operating system of the mobile device in a manner that causes the operating system of the mobile device to recognize the one or more folders of the host as a cloud gaming application that is already installed on the mobile device.

Example 6: The method of any of examples 1-5, wherein making data of the cloud gaming application available includes receiving, by the computer processor, changes written directly from the mobile device.

Example 7: The method of any of examples 1-6, wherein making data of the cloud gaming application available further includes preserving, by the computer processor, a mapped folder that includes the changes, thus avoiding any need to copy game save data.

Example 8: A system comprising: at least one physical processor of a host of a cloud gaming server; physical memory comprising computer-executable instructions that, when executed by the physical processor, cause the physical processor to: provide a persistent storage overlay service; receive, from a mobile device, one or more requests for access to one or more files of a cloud gaming application stored on the host; and make, in response to the one or more requests, data of the cloud gaming application available to the host and to the mobile device, without copying the data, in a manner that obviates installation of the cloud gaming application on the mobile device.

Example 9: The system of example 8, wherein the physical processor provides the persistent storage overlay service at least in part by using a file system and an emulator that allows an operating system of a mobile device to directly access the cloud gaming application stored on the host.

Example 10: A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device of a host of a cloud gaming server, cause the computing device to: provide a persistent storage overlay service; receive, from a mobile device, one or more requests for access to one or more files of a cloud gaming application stored on the host; and make, in response to the one or more requests, data of the cloud gaming application available to the host and to the mobile device, without copying the data, in a manner that obviates installation of the cloud gaming application on the mobile device.

Example 11: A computer-implemented method comprising: transmitting, by a computer processor of a mobile device to a persistent storage overlay service provided by a host of a cloud gaming server, one or more requests for access to one or more files of a cloud gaming application stored on the host; receiving access, by the computer processor and from the host, to data of the cloud gaming application, without receiving a copy the data, in a manner that obviates installation of the cloud gaming application on the mobile device; and writing changes, by the computer processor of the mobile device, directly to a folder of the host in a manner that obviates creating a copy of game save data on the mobile device.

Example 12: The method of example 11, wherein the persistent storage overlay is provided by using a file system and an emulator that allows an operating system of the mobile device to directly access the cloud gaming application stored on the host.

Example 13: The method of any of examples 11 or 12, wherein the persistent storage overlay service is provided at least in part by using a file system in user mode (FUSE) to directly map the one or more files of the cloud gaming application stored on the host to an Android operating system of the mobile device.

Example 14: The method of any of examples 11-13, wherein the requests are redirected by a background service running on the mobile device to the persistent overlay service provided by the host.

Example 15: The method of any of examples 11-14, wherein folders of the host are mapped into an operating system of the mobile device.

Example 16: The method of any of examples 11-15, wherein the folders are mapped in a manner that causes the operating system of the mobile device to recognize the folders of the host as a cloud gaming application that is already installed on the mobile device.

Example 17: The method of any of examples 11-16, wherein the host is configured to preserve a mapped folder that includes the changes, thus avoiding any need to copy game save data.

Example 18: A system comprising: at least one physical processor of a mobile device; physical memory comprising computer-executable instructions that, when executed by the physical processor, cause the physical processor to: transmit, to a persistent storage overlay service provided by a host of a cloud gaming server, one or more requests for access to one or more files of a cloud gaming application stored on the host; receive access, from the host, to data of the cloud gaming application, without receiving a copy the data, in a manner that obviates installation of the cloud gaming application on the mobile device; and write changes directly to a folder of the host in a manner that obviates creating a copy of game save data on the mobile device.

Example 19: The system of example 18, wherein the persistent storage overlay is provided by using a file system and an emulator that allows an operating system of the mobile device to directly access the cloud gaming application stored on the host.

Example 20: A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processor of a mobile device, cause the computing device to: transmit, to a persistent storage overlay service provided by a host of a cloud gaming server, one or more requests for access to one or more files of a cloud gaming application stored on the host; receive access, from the host, to data of the cloud gaming application, without receiving a copy the data, in a manner that obviates installation of the cloud gaming application on the mobile device; and write changes directly to a folder of the host in a manner that obviates creating a copy of game save data on the mobile device.

As detailed above, the computing devices and systems described and/or illustrated herein broadly represent any type or form of computing device or system capable of executing computer-readable instructions, such as those contained within the modules described herein. In their most basic configuration, these computing device(s) may each include at least one memory device and at least one physical processor.

In some examples, the term “memory device” generally refers to any type or form of volatile or non-volatile storage device or medium capable of storing data and/or computer-readable instructions. In one example, a memory device may store, load, and/or maintain one or more of the modules described herein. Examples of memory devices include, without limitation, Random Access Memory (RAM), Read Only Memory (ROM), flash memory, Hard Disk Drives (HDDs), Solid-State Drives (SSDs), optical disk drives, caches, variations or combinations of one or more of the same, or any other suitable storage memory.

In some examples, the term “physical processor” generally refers to any type or form of hardware-implemented processing unit capable of interpreting and/or executing computer-readable instructions. In one example, a physical processor may access and/or modify one or more modules stored in the above-described memory device. Examples of physical processors include, without limitation, microprocessors, microcontrollers, Central Processing Units (CPUs), Field-Programmable Gate Arrays (FPGAs) that implement softcore processors, Application-Specific Integrated Circuits (ASICs), portions of one or more of the same, variations or combinations of one or more of the same, or any other suitable physical processor.

Although illustrated as separate elements, the modules described and/or illustrated herein may represent portions of a single module or application. In addition, in certain embodiments one or more of these modules may represent one or more software applications or programs that, when executed by a computing device, may cause the computing device to perform one or more tasks. For example, one or more of the modules described and/or illustrated herein may represent modules stored and configured to run on one or more of the computing devices or systems described and/or illustrated herein. One or more of these modules may also represent all or portions of one or more special-purpose computers configured to perform one or more tasks.

In addition, one or more of the modules described herein may transform data, physical devices, and/or representations of physical devices from one form to another. For example, one or more of the modules recited herein may receive session data to be transformed, transform the session data, output a result of the transformation to manage session data, use the result of the transformation to maintain the session data, and store the result of the transformation to store the session data. Additionally or alternatively, one or more of the modules recited herein may transform a processor, volatile memory, non-volatile memory, and/or any other portion of a physical computing device from one form to another by executing on the computing device, storing data on the computing device, and/or otherwise interacting with the computing device.

In some embodiments, the term “computer-readable medium” generally refers to any form of device, carrier, or medium capable of storing or carrying computer-readable instructions. Examples of computer-readable media include, without limitation, transmission-type media, such as carrier waves, and non-transitory-type media, such as magnetic-storage media (e.g., hard disk drives, tape drives, and floppy disks), optical-storage media (e.g., Compact Disks (CDs), Digital Video Disks (DVDs), and BLU-RAY disks), electronic-storage media (e.g., solid-state drives and flash media), and other distribution systems.

The process parameters and sequence of the steps described and/or illustrated herein are given by way of example only and can be varied as desired. For example, while the steps illustrated and/or described herein may be shown or discussed in a particular order, these steps do not necessarily need to be performed in the order illustrated or discussed. The various exemplary methods described and/or illustrated herein may also omit one or more of the steps described or illustrated herein or include additional steps in addition to those disclosed.

The preceding description has been provided to enable others skilled in the art to best utilize various aspects of the exemplary embodiments disclosed herein. This exemplary description is not intended to be exhaustive or to be limited to any precise form disclosed. Many modifications and variations are possible without departing from the spirit and scope of the present disclosure. The embodiments disclosed herein should be considered in all respects illustrative and not restrictive. Reference should be made to the appended claims and their equivalents in determining the scope of the present disclosure.

Unless otherwise noted, the terms “connected to” and “coupled to” (and their derivatives), as used in the specification and claims, are to be construed as permitting both direct and indirect (i.e., via other elements or components) connection. In addition, the terms “a” or “an,” as used in the specification and claims, are to be construed as meaning “at least one of.” Finally, for ease of use, the terms “including” and “having” (and their derivatives), as used in the specification and claims, are interchangeable with and have the same meaning as the word “comprising.” 

1. A computer-implemented method comprising: providing, by a computer processor of a host of a cloud gaming server, a persistent storage overlay service; receiving, by the computer processor from a mobile device, one or more requests for access to one or more files of a cloud gaming application stored on the host; and making, by the computer processor in response to the one or more requests, data of the cloud gaming application available to the host and to the mobile device, without copying the data, in a manner that obviates installation of the cloud gaming application on the mobile device, wherein making data of the cloud gaming application available includes: receiving, by the computer processor, changes written directly from the mobile device; preserving, by the computer processor, a mapped folder that includes the changes that include game save data for a mobile device in an individual user session for the mobile device, thus avoiding any need to copy the game save data; and employing, by the computer processor, the individual user session preserved in the mapped folder to restore a paused user session without retrieving additional game save data for an additional mobile device.
 2. The method of claim 1, wherein the computer processor provides the persistent storage overlay service at least in part by using a file system and an emulator that allows an operating system of a mobile device to directly access the cloud gaming application stored on the host.
 3. The method of claim 1, wherein providing the persistent storage overlay service is accomplished at least in part by using a file system in user mode (FUSE) to directly map the one or more files of the cloud gaming application stored on the host to an Android operating system of the mobile device.
 4. The method of claim 1, wherein the requests are redirected by a background service running on the mobile device to the persistent storage overlay service provided by the host.
 5. The method of claim 1, wherein making data of the cloud gaming application available to the host and to the mobile device without copying the data includes mapping one or more folders of the host into an operating system of the mobile device in a manner that causes the operating system of the mobile device to recognize the one or more folders of the host as a cloud gaming application that is already installed on the mobile device.
 6. The method of claim 1, wherein the changes further include user preferences.
 7. The method of claim 6, further comprising restoring the paused user session without retrieving additional user preferences for the additional mobile device.
 8. A system comprising: at least one physical processor of a host of a cloud gaming server; and physical memory comprising computer-executable instructions that, when executed by the physical processor, cause the physical processor to: provide a persistent storage overlay service; receive, from a mobile device, one or more requests for access to one or more files of a cloud gaming application stored on the host; and make, in response to the one or more requests, data of the cloud gaming application available to the host and to the mobile device, without copying the data, in a manner that obviates installation of the cloud gaming application on the mobile device, wherein making data of the cloud gaming application available includes: receiving changes written directly from the mobile device; preserving a mapped folder that includes the changes that include game save data for a mobile device in an individual user session for the mobile device, thus avoiding any need to copy the game save data; and employing the individual user session preserved in the mapped folder to restore a paused user session without retrieving additional game save data for an additional mobile device.
 9. The system of claim 8, wherein the physical processor provides the persistent storage overlay service at least in part by using a file system and an emulator that allows an operating system of a mobile device to directly access the cloud gaming application stored on the host.
 10. A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device of a host of a cloud gaming server, cause the computing device to: provide a persistent storage overlay service; receive, from a mobile device, one or more requests for access to one or more files of a cloud gaming application stored on the host; and make, in response to the one or more requests, data of the cloud gaming application available to the host and to the mobile device, without copying the data, in a manner that obviates installation of the cloud gaming application on the mobile device, wherein making data of the cloud gaming application available includes: receiving changes written directly from the mobile device; preserving a mapped folder that includes the changes that include game save data for a mobile device in an individual user session for the mobile device, thus avoiding any need to copy the game save data; and employing the individual user session preserved in the mapped folder to restore a paused user session without retrieving additional game save data for an additional mobile device.
 11. A computer-implemented method comprising: transmitting, by a computer processor of a mobile device to a persistent storage overlay service provided by a host of a cloud gaming server, one or more requests for access to one or more files of a cloud gaming application stored on the host; receiving access, by the computer processor and from the host, to data of the cloud gaming application, without receiving a copy the data, in a manner that obviates installation of the cloud gaming application on the mobile device, wherein receiving access to data of the cloud gaming application includes receiving data of a user session restored by the host employing a folder to restore a paused user session; and writing changes, by the computer processor of the mobile device, directly to the folder of the host in a manner that obviates creating a copy of game save data on the mobile device, wherein the host restores the paused user session without retrieving additional game save data for an additional mobile device.
 12. The method of claim 11, wherein the persistent storage overlay service is provided by using a file system and an emulator that allows an operating system of the mobile device to directly access the cloud gaming application stored on the host.
 13. The method of claim 11, wherein the persistent storage overlay service is provided at least in part by using a file system in user mode (FUSE) to directly map the one or more files of the cloud gaming application stored on the host to an Android operating system of the mobile device.
 14. The method of claim 11, wherein the requests are redirected by a background service running on the mobile device to the persistent overlay service provided by the host.
 15. The method of claim 11, wherein folders of the host are mapped into an operating system of the mobile device.
 16. The method of claim 15, wherein the folders are mapped in a manner that causes the operating system of the mobile device to recognize the folders of the host as a cloud gaming application that is already installed on the mobile device.
 17. The method of claim 11, wherein the host is configured to preserve a mapped folder that includes the changes, thus avoiding any need to copy game save data.
 18. A system comprising: at least one physical processor of a mobile device; and physical memory comprising computer-executable instructions that, when executed by the physical processor, cause the physical processor to: transmit, to a persistent storage overlay service provided by a host of a cloud gaming server, one or more requests for access to one or more files of a cloud gaming application stored on the host; receive access, from the host, to data of the cloud gaming application, without receiving a copy the data, in a manner that obviates installation of the cloud gaming application on the mobile device, wherein receiving access to data of the cloud gaming application includes receiving data of a user session restored by the host employing a folder to restore a paused user session; and write changes directly to the folder of the host in a manner that obviates creating a copy of game save data on the mobile device, wherein the host restores the paused user session without retrieving additional game save data for an additional mobile device.
 19. The system of claim 18, wherein the persistent storage overlay service is provided by using a file system and an emulator that allows an operating system of the mobile device to directly access the cloud gaming application stored on the host.
 20. A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processor of a mobile device, cause the mobile device to: transmit, to a persistent storage overlay service provided by a host of a cloud gaming server, one or more requests for access to one or more files of a cloud gaming application stored on the host; receive access, from the host, to data of the cloud gaming application, without receiving a copy the data, in a manner that obviates installation of the cloud gaming application on the mobile device, wherein receiving access to data of the cloud gaming application includes receiving data of a user session restored by the host employing a folder to restore a paused user session; and write changes directly to the folder of the host in a manner that obviates creating a copy of game save data on the mobile device, wherein the host restores the paused user session without retrieving additional game save data for an additional mobile device. 